<html>
    <head>
        <title>如何配置哪些实体更改需要记录</title>
    </head>
    <body>
        <script>
            /*
                        四、如何配置哪些实体更改需要记录？

                                    使用 实体历史选择器 EntityHistorySelector 或者 [Audited] 和 [DisabledAduting] 特性

                                    1、实体历史选择器 EntityHistorySelector
                                            
                                            保存所有实体的所有更改将需要大量数据库空间。
                                            
                                            因此，审计日志系统不会为实体保存任何更改，除非你明确配置它。

                                            如果要保存所有实体的所有更改，只需使用AddAllEntities()扩展方法。
                                            eg:
                                                Configure<AbpAuditingOptions>(options =>
                                                {
                                                    options.EntityHistorySelectors.AddAllEntities(); // 记录所有实体的更改

                                                });  

                                            options.EntityHistorySelectors 实际上是一个"类型谓词列表"。你可以编写一个 lambda 表达式来定义你的过滤器。

                                            下面的示例选择器执行与上面定义的 AddAllEntities() 扩展方法相同的操作：

                                                    Configure<AbpAuditingOptions>(options =>
                                                    {
                                                        options.EntityHistorySelectors.Add(
                                                            new NamedTypeSelector(
                                                                "MySelectorName",
                                                                type =>
                                                                {
                                                                    if (typeof(IEntity).IsAssignableFrom(type)) // IsAssignableFrom(type) 可以被当前实体"赋值"的 IEntity类型
                                                                    {
                                                                        return true;
                                                                    }
                                                                    else
                                                                    {
                                                                        return false;
                                                                    }
                                                                }
                                                            )
                                                        );
                                                    });  

                                            条件typeof(IEntity).IsAssignableFrom(type)将为true（从技术上讲，这是应用程序中的所有实体）。你可以根据自己的偏好有条件地检查并返回true或false。
                                            
                                            options.EntityHistorySelectors 是一种灵活切动态的方式来选择设计日志记录的实体。
                                
                                    2、[Audited] 特性 和 [DisableAduting] 特性
                                                        
                                            另一种选择是否记录某个实体的方法是使用 [Audited] 和 [DisabledAuditing] 特性！！ (也是最简单的方法，不需要任何配置)       

                                                    
                    */
        </script>
    </body>
</html>